home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2005 February / WN_129_CD.iso / Windows / Extensions Firefox / LinkPreview / LinkPreview-1.0-Fr.xpi / chrome / linkpreview.jar / content / linkpreview.xul < prev    next >
Encoding:
Extensible Markup Language  |  2004-10-11  |  4.9 KB  |  216 lines

  1. <?xml version="1.0"?>
  2.  
  3. <overlay id="linkpreview"
  4. xmlns:html = "http://www.w3.org/1999/xhtml"
  5. xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  6.  
  7.  
  8.  <script type="application/x-javascript">
  9.  
  10.  <![CDATA[
  11.     var img;
  12.     var timout;
  13.     var canshow;
  14.     var imgleft,imgtop;
  15.  
  16.     function ShowPreview()
  17.     {
  18.         if (!canshow) canshow=true;
  19.         else
  20.         {
  21.             var body=window._content.document.body;
  22.             var toph=body.scrollTop+body.clientHeight;
  23.             var topw=body.scrollLeft+body.clientWidth;
  24.  
  25.             if (imgtop+img.height>toph)
  26.             {
  27.                 imgtop=imgtop-20-img.height;
  28.                 img.style.top=imgtop+"px";
  29.             }
  30.             if (imgleft+img.width>topw)
  31.             {
  32.                 imgleft=imgleft-20-img.width;
  33.                 img.style.left=imgleft+"px";
  34.             }
  35.             img.style.visibility="visible";
  36.         }
  37.     }
  38.  
  39.     function LoadPreview()
  40.     {
  41.         if (!canshow) canshow=true;
  42.         else ShowPreview();
  43.     }
  44.  
  45.   function FirePreview(url,event)
  46.     {
  47.         canshow=false;
  48.         window._content.document.body.appendChild(img);
  49.         img.src=url;
  50.         img.style.position="absolute";
  51.         img.style.textTop="true";
  52.         img.style.zIndex="10";
  53.  
  54.         imgleft=event.pageX+20;
  55.         imgtop=event.pageY+20;
  56.         img.style.left=imgleft+"px";
  57.         img.style.top =imgtop+"px";
  58.         if (timout)
  59.             clearTimeout(timout);
  60.  
  61.         timout=setTimeout("ShowPreview();",1000);
  62.     }
  63.  
  64.     function closeAd()
  65.     {
  66.         if (timout)
  67.             clearTimeout(timout);
  68.         try {
  69.             if (img)
  70.             {
  71.                 img.src="about:blank";
  72.                 img.style.visibility="hidden";
  73.                 window._content.document.body.removeChild(img);
  74.             }
  75.         }
  76.         catch (ex){}
  77.     }
  78.  
  79.     function mouseover(event)
  80.     {
  81.         try{
  82.             var node=event.originalTarget;
  83.             while (node.protocol==null)
  84.             {
  85.                 node = node.parentNode;
  86.                 if (node==null)
  87.                 {
  88.                     closeAd();
  89.                     return true;
  90.                 }
  91.             }
  92.             curhost=window._content.location.hostname;
  93.             if (node.hostname==curhost)
  94.             {
  95.                 closeAd();
  96.                 return true;
  97.             }
  98.             var href=node.href;
  99.             href=unescape(href);
  100.             href=href.toLowerCase();
  101.             var pos=href.lastIndexOf("http:");
  102.             if (pos!=-1)
  103.                 href=href.substr(pos);
  104.             else
  105.                 href=node.protocol+"//"+node.hostname+node.pathname;
  106.             href=href.toLowerCase();
  107.             if (href.indexOf("javascript:")!=-1)
  108.             {
  109.                 closeAd();
  110.                 return true;
  111.             }
  112.             if (href.indexOf("mailto:")!=-1)
  113.             {
  114.                 href="chrome://linkpreview/content/mail.png";
  115.             }
  116.             else
  117.             {
  118.  
  119.                 const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  120.                 var searchstr;
  121.                 try
  122.                 {
  123.                     searchstr=preferencesService.getCharPref("linkpreview.string");
  124.                 }
  125.                 catch(ex)
  126.                 {
  127.                     searchstr="http://thumbnails.alexa.com/image_server.cgi?size=large&url=";
  128.                 }
  129.                 if (searchstr=="")
  130.                     searchstr="http://thumbnails.alexa.com/image_server.cgi?size=large&url=";
  131.                 href=searchstr+href;
  132.             }
  133.             FirePreview(href,event);
  134.         }
  135.         catch (ex) {}
  136.     }
  137.  
  138.     function linkpreviewContext()
  139.     {
  140.         const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  141.         var element=document.getElementById("idlinkpreview");
  142.         var context;
  143.         try
  144.         {
  145.             context=preferencesService.getBoolPref("linkpreview.addcontextmenu");
  146.         }
  147.         catch(ex)
  148.         {
  149.             element.hidden=true;
  150.             return;
  151.         }
  152.  
  153.         if (context=0 || !context)
  154.         {
  155.             element.hidden=true;
  156.             return;
  157.         }
  158.         element.hidden=false;
  159.  
  160.         var enabl=preferencesService.getBoolPref("linkpreview.enabled");
  161.         if (!enabl)
  162.         {
  163.             element.setAttribute("checked","false");
  164.             return;
  165.         }
  166.         element.setAttribute("checked","true");
  167.     }
  168.  
  169.  
  170.     function enablelinkpreview(element)
  171.     {
  172.       const checked = element.getAttribute("checked");
  173.       const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  174.         if (checked)
  175.         {
  176.           preferencesService.setBoolPref("linkpreview.enabled", true);
  177.           window.addEventListener("mouseover",mouseover,false);
  178.       }
  179.         else
  180.         {
  181.           preferencesService.setBoolPref("linkpreview.enabled", false);
  182.             window.removeEventListener("mouseover",mouseover,false);
  183.       }
  184.     }
  185.  
  186.  
  187.     function linkpreviewInit()
  188.     {
  189.          var menu = document.getElementById("contentAreaContextMenu");
  190.       menu.addEventListener("popupshowing",linkpreviewContext,false);
  191.         img=window._content.document.createElement("img");
  192.         img.addEventListener("load",LoadPreview,false);
  193.     }
  194.  
  195.     window.addEventListener("load", linkpreviewInit, false);
  196.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  197.     try{
  198.     if (preferencesService.getBoolPref("linkpreview.enabled"))
  199.         window.addEventListener("mouseover",mouseover,false);
  200.     }
  201.     catch(ex)
  202.     {
  203.         window.addEventListener("mouseover",mouseover,false);
  204.     }
  205.  
  206.     ]]>
  207.     </script>
  208.  
  209.  
  210.     <popup id="contentAreaContextMenu">
  211.         <menuitem id="idlinkpreview" label="LinkPreview" type="checkbox" oncommand="enablelinkpreview(this)"/>
  212.     </popup>
  213.  
  214.  
  215. </overlay>
  216.